#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <setjmp.h>

#define MAXLINE     1024

sigjmp_buf buf;

void handler(int sig)
{
    siglongjmp(buf, 1);
}

char * tfgets(char *s, int size, FILE *stream)
{
    char *str;
    signal(SIGCHLD, handler);

    if (!sigsetjmp(buf, SIGCHLD))
    {
        if (fork() == 0)
        {
            sleep(5);
            exit(0);
        }
        return fgets(s, size, stream);
    }
    else
        return NULL;
}
